package 模板方法;

/**
 * 一个抽象类，已知所有的实现步骤，部分方法可能不确定怎么实现，延迟到子类中去实现
 */
public abstract class AbtractBaseClass {

    /**
     * 下边是炒菜的步骤，我不确定，methodB-调味的实现，methodC-装盘的实现，子类不同的方式实现不同的实现
     * 定义final类型，防止子类覆盖
     * 创建固定的执行算法步骤，部分的算法实现-子类实现
     */
    public final void template() {
        methodA();
        methodB();
        methodC();
    }

    /**
     * 确定的具体方法
     */
    public void methodA() {
        System.out.println("菜放到锅里");
    }

    public abstract void methodB();

    public abstract void methodC();
}
